package service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.catalina.Session;

import bean.Departamento;
import bean.TipoDocumento;
import bean.Usuario;
import dao.DepartamentoDao;
import dao.HibernateDAO;
import dao.TipoDocumentoDao;
import dao.UsuarioDao;


public class Servicio {
	
	private static Servicio instancia = null;
	
	private static HibernateDAO dao;
	
	public static Servicio getInstancia(){
		if(instancia == null){
			instancia = new Servicio();
		} 
		return instancia;
	}
	
	private Servicio() {
		dao = HibernateDAO.getInstancia();
	}
	
	
	public Boolean validarUsuario(String nombre, String contrasena, HttpServletRequest request)
	{
		Usuario usuario = UsuarioDao.obtenerUsuario(nombre);
		
		//Valido si es un usuario del sistema y lo cargo en la session
		if(usuario != null && usuario.esUsuario(nombre, contrasena))
		{	
			HttpSession session = request.getSession();
			session.setAttribute("UsuarioId", usuario.getId());
			session.setAttribute("UsuarioNombre", usuario.getNombre());
			session.setAttribute("UsuarioContrasena", usuario.getContrasena());
			session.setAttribute("UsuarioTipo", usuario.getTipo());
			
			return true;
		}
		else
		{
			return false;
		}
	}
	
	public void cerrarSession(HttpServletRequest request)
	{
		HttpSession session = request.getSession();
		session.removeAttribute("UsuarioId");
		session.removeAttribute("UsuarioNombre");
		session.removeAttribute("UsuarioContrasena");
		session.removeAttribute("UsuarioTipo");
		
	}
	
	public List<TipoDocumento> obtenerTipoDocumentos(Boolean estado)
	{
		return TipoDocumentoDao.obtenerTipoDocumentos(estado);
	}
	
	public List<Departamento> obtenerDepartamentos(Boolean estado)
	{
		return DepartamentoDao.obtenerDepartamentos(estado);
	}
	
}
